/**
*
*/
package org.javacommerce.paypal.servlet;
import java.io.IOException;
import java.rmi.RemoteException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.javacommerce.paypal.APIUtil;
import org.javacommerce.paypal.ws.API;
import org.javacommerce.paypal.ws.APICredential;
import org.javacommerce.paypal.ws.APIException;
import PayPalAPI.api.ebay.DoDirectPaymentResponseType;
import eBLBaseComponents.apis.ebay.DoDirectPaymentRequestDetailsType;
/**
* Servlet to support PayPal's Direct Payment API. Supports POST method only.
* @author Michael Blanton (mike@mikeblanton.com)
* @web.servlet name="DirectPayment"
* @web.servlet-mapping url-pattern="/DirectPayment"
*/
public class DirectPaymentServlet extends BaseServlet {
private static final Log LOG = LogFactory.getLog(DirectPaymentServlet.class);
/**
*
*/
private static final long serialVersionUID = -8470270479015445490L;
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
protected void doPost(HttpServletRequest _request, HttpServletResponse _response) throws ServletException, IOException {
runDoDirectPayment(_request, _response);
}
/**
* @param _request
* @param _response
* @throws ServletException
*/
protected final void runDoDirectPayment(HttpServletRequest _request, HttpServletResponse _response) throws ServletException {
if (LOG.isDebugEnabled()) {
LOG.debug("Executing DoDirectPayment API call.");
}
APICredential credentials;
try {
credentials = getAPICredentials(_request);
} catch (APIException e) {
writeException("DP-1003", "Error executing DoDirectPayment API call", null, e, _response);
return;
}
DoDirectPaymentRequestDetailsType request = APIUtil.buildDoDirectPaymentRequestDetails(_request);
try {
DoDirectPaymentResponseType response = API.doDirectPayment(request, credentials);
if (LOG.isDebugEnabled()) {
LOG.debug("DoDirectPayment API call returned [" + response.getAck() + "], building XML.");
}
writeObject(response, _response);
if (LOG.isDebugEnabled()) {
LOG.debug("XML written to Output Stream");
}
} catch (RemoteException e) {
writeException("DP-1000", "Error executing DoDirectPayment API call", credentials, e, _response);
}
}
protected void doGet(HttpServletRequest _request, HttpServletResponse _response) throws ServletException, IOException {
notAllowed(_response, "POST");
}
protected void doPut(HttpServletRequest _request, HttpServletResponse _response) throws ServletException, IOException {
notAllowed(_response, "POST");
}
}